perm filename COMPLR.PRO[WD,JMC] blob sn#150746 filedate 1975-03-19 generic text, type T, neo UTF8
		Proposal for Lisp Compiler Maintenance Manual

				Whitfield Diffie

	At present, anyone wishing to use the Stanford Lisp  1.6  compiler  more
subtly  than compiling a list of files in the usual way, is hindered by the need
to study  a  rather  substantial  amount  of  well  organsied  but  complex  and
undocumented  code.  The proposed manual would remedy this by making available a
clear explanation of all aspects of the compiler's sturcture and operation.

This manual will contain:

1) An explanation of each routine, sufficient  to  make  it  functioning  clear.
This  will  include  its overall behavior, the conventions and circomstances for
its use, and an explanation of each non-obvious line of code it contains.

2) A general explanation of the compiler's  operation  sufficient  to  give  the
casual  reader  an understanding of its operation and general layout. I envision
an turorial version of what we would write if publishing a paper on it.

3) Careful explanation of several  general  mechanism's,  not  all  explicit  to
compiling,  which are used throughout, an may be of interest to Lisp programmers
in general.

4) A thorough explanation of the data structures.

5) An index of the various global variables to accompany #4.

6) The compiler is highly extensible, though this feature has been of little use
due  to  lack  of  documentation.  An explanation of how the arrange for special
compilation of new classes of functions introduced  by  the  programmer  without
modification of the compiler itself will be included.

7)  The  built in debugging machinery of the compiler will be explained, thereby
giving the prospective modifier the basic tools needed for the work.

8) The use of the compiler, to compile files, to compile from memory  etc.  will
be  explained.   This  will include explanation of a variety of global variables
giving default devices, modes etc.

9) An index of the above sections by both the terms used and terms standard  for
concepts in compiling.

Cost Estimate:

	The  Stanford  Lisp  compiler  is  approximately  fifty pages in length,
containing some three hundred s-expressions of which two hundred and  fifty  are
routine  definitions.   There are about two thousand five hundred lines of code.
The document described above will probably be of comperable length.  Presumeably
no  more  than  a  factor  of  two larger or smaller. I base my extimate of cost
primarily on the number of routines, though it appears consistent with the  size
of  the  other  parameters.   Although most of these routines are both small and
simple, the remainder are often both large and complex.   I estimate and average
of one hour apiece.

My  present  hourly salery from the Stanford EE department which employs me half
time is $7.18 per hour.  Figuring a charge of  1.5  times  that  per  hour,  and
allowing  for  a  30% overrun, as suggested gives $14 per hour.  For two hundred
and fifty hours, this comes to  $3500.    Devlivery  will  depend  on  my  other
commitments, but should be no worse than three months, or 1/2 time.